package com.xiyin.utils.list;

import com.xiyin.utils.list.entity.User;

import java.util.ArrayList;
import java.util.List;

public class ListCRUDExample {

    public static void main(String[] args) {
        // 创建一个ArrayList实例
        List<User> userList = new ArrayList<>();

        // 插入/增加数据（Create）
        User user1 = new User("Alice", 25);
        userList.add(user1);

        User user2 = new User("Bob", 30);
        userList.add(user2);

        System.out.println("Original list: " + userList);

        // 更新数据（Update）
        User userToUpdate = userList.get(1);
        userToUpdate.setAge(20); // 修改年龄

        System.out.println("Updated list after changing Bob's age: " + userList);

        // 删除数据（Delete）
        userList.remove(user1);
        System.out.println("List after removing Alice: " + userList);

        // 查找数据（Read）
        /**
         * 判断列表中是否存在名为Alice的用户
         *
         * @param userList 用户列表
         * @return 如果存在名为Alice的用户则返回true，否则返回false
         */
        boolean isAliceInList = userList.stream().anyMatch(u -> u.getName().equals("Alice"));
        System.out.println("Is Alice in the list? " + isAliceInList);

        // 按条件查找并修改
        userList.stream() // 转换为Stream
            .filter(user -> user.getAge() > 30) // 过滤条件，只保留年龄大于30的用户
            .forEach(user -> user.setAge(user.getAge() - 5)); // 对满足条件的每个用户，减少年龄5岁

        System.out.println("List after reducing age for users older than 30: " + userList);
    }
}